In computing, booting is the initial set of operations a computer system performs after its start. When a computer system boots via a network connection, the Dynamic Host Configuration Protocol (DHCP) is often used to gather an Internet Protocol (IP) address by the booting computer system. To this end, the computer system sends an initial DHCP request and queries another computer system, the DHCP server, for an IP address. When the DHCP server has a valid entry for the requesting computer system in its configuration database, it will send out a DHCP response with the IP address assigned to the requesting computer system.
The IP address provided by the DHCP server can be assigned randomly or based on a system identifier contained in the DHCP request. Often, a Media Access Control (MAC) address of the requesting computer system is used by the DHCP server to assign a specific IP address to it. To this end, a mapping between MAC addresses and IP addresses can be configured by an operator after the installation of the computer systems. The mapping can also be performed automatically. When, for example, the computer systems are part of a physical blade system with multiple blade servers, the MAC addresses of the blade servers can automatically be discovered or assigned according to their physical positions in a chassis or shelf.
In a virtualized environment, such as a virtualized application cluster with multiple virtual machines, the virtual “hardware” of the virtual machines cannot be based on physical parameters identifying the physical hardware (such as a position in a chassis). However, identifying parameters can be generated automatically at deployment time of the virtual machines. Each new virtual machine can be assigned a random MAC address when it is created. This also means that the MAC address cannot be entered in a configuration database of the DHCP server before the actual deployment of the virtual machine takes place.
In a virtualized environment, a DHCP server can therefore not easily recognize the MAC address or other DHCP options of its clients (i.e., the virtual machines). This fact makes it difficult to automate the deployment of new virtual machines in a virtual environment, even though virtual environments are suitable and actually intended to exploit automated procedures. This problem applies to both legacy application clusters that are ported to a cloud or virtualized environment, and to new application clusters that are designed to work in both virtualized and physical deployments.
A possible workaround for the initial deployment of a virtualized application cluster requires human intervention. After all virtual machines have been created, an administrator may edit the configuration database of a virtual DHCP server within the cluster and give it a list of MAC addresses that have been assigned to the virtual machines. However, this solution is not suitable for fully automated deployments. Also, it requires all virtual machines to be persistent, and it makes it difficult to increase the capacity of the cluster at a later point in time by adding new virtual machines to it because the required human intervention limits the opportunities for automatic scaling.